package com.yifeng.service;


import com.yifeng.common.Result;
import com.yifeng.model.LoginInfo;

public interface UserService {

    /*
    负责人：

    功能：用户登录验证，校验用户名和密码是否匹配，并返回用户信息（含角色）

    参数：userName - 用户名；password - 用户输入的原始密码（未加密）

    返回值: 若验证成功，返回包含 User 对象的 Result；失败则返回错误信息的 Result（不返回 null，统一使用 Result 封装）
    */

    Result login(String userName, String password);
    /*
    负责人：

    功能：用户注册功能，支持注册普通用户或管理员（管理员需提供有效邀请码）

    参数：username - 注册用户名（非空）；password - 注册密码（非空）；role - 用户角色，仅限 "user" 或 "admin"；inviteCode - 邀请码（当 role 为 "admin" 时必填，普通用户可为 null 或空）

    返回值: 注册成功返回成功 Result，失败（如用户名重复、邀请码错误等）返回对应错误信息的 Result
    */

    Result register(String username, String password, String role, String inviteCode);

    /*
    负责人：

    功能：分页获取系统中所有用户列表，按用户创建时间倒序排列

    参数：pageNum - 请求的页码（从 1 开始）；pageSize - 每页显示的用户数量（限制范围 1~50）

    返回值: 返回包含分页信息（如 total、list 等）和用户数据列表的 Result 对象
    */

    Result getAllUsers();
    /*
    负责人：

    功能：按用户角色进行筛选并分页查询用户列表，结果按创建时间倒序

    参数：role - 要筛选的角色（如 "admin" 或 "user"）；pageNum - 页码（从 1 开始）；pageSize - 每页条数（1~50）

    返回值: 返回筛选后符合条件的分页用户列表，封装在 Result 中
    */

    Result getUsersByRoleWithPagination(String role, int pageNum, int pageSize);
    /*
    负责人：

    功能：根据用户 ID 删除指定用户（逻辑删除或物理删除，由实现类决定）

    参数：userId - 要删除的用户唯一标识（Integer 类型，不可为 null）

    返回值: 删除成功返回成功 Result，失败（如用户不存在）返回错误 Result
    */

    Result deleteUserById(Integer userId);
}